#include "definition.h"
// 考虑特殊情况
class Solution {
 public:
  int minDepth(TreeNode* root) {
    if (!root) return 0;
    // return 1+min(minDepth(root->left),minDepth(root->right));
    int leftDepth = minDepth(root->left);    // 左
    int rightDepth = minDepth(root->right);  // 右
                                             // 中
    // 当一个左子树为空，右不为空，这时并不是最低点
    if (root->left == NULL && root->right != NULL) {
      return 1 + rightDepth;
    }
    // 当一个右子树为空，左不为空，这时并不是最低点
    if (root->left != NULL && root->right == NULL) {
      return 1 + leftDepth;
    }
    // 两颗子树都存在时
    int result = 1 + min(leftDepth, rightDepth);
    return result;
  }
};